package com.ruoyi.energy.service;

import java.util.List;
import java.util.Map;
import com.ruoyi.energy.domain.EmsEnergyData;

/**
 * 能源数据Service接口
 * 
 * @author ruoyi
 * @date 2024-01-20
 */
public interface IEmsEnergyDataService {
    
    /**
     * 查询能源数据
     * 
     * @param dataId 能源数据主键
     * @return 能源数据
     */
    public EmsEnergyData selectEmsEnergyDataByDataId(Long dataId);

    /**
     * 查询能源数据列表
     * 
     * @param emsEnergyData 能源数据
     * @return 能源数据集合
     */
    public List<EmsEnergyData> selectEmsEnergyDataList(EmsEnergyData emsEnergyData);

    /**
     * 查询设备最新能源数据
     * 
     * @param deviceId 设备ID
     * @return 能源数据
     */
    public EmsEnergyData selectLatestDataByDeviceId(Long deviceId);

    /**
     * 查询所有设备最新能源数据
     * 
     * @return 能源数据集合
     */
    public List<EmsEnergyData> selectLatestDataList();

    /**
     * 查询能源数据统计
     * 
     * @param deviceId 设备ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param timeType 时间类型(hour/day/month)
     * @return 统计数据
     */
    public List<Map<String, Object>> selectEnergyDataStatistics(Long deviceId, String startTime, String endTime, String timeType);

    /**
     * 查询能源数据趋势
     * 
     * @param deviceId 设备ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 趋势数据
     */
    public List<Map<String, Object>> selectEnergyDataTrend(Long deviceId, String startTime, String endTime);

    /**
     * 新增能源数据
     * 
     * @param emsEnergyData 能源数据
     * @return 结果
     */
    public int insertEmsEnergyData(EmsEnergyData emsEnergyData);

    /**
     * 批量新增能源数据
     * 
     * @param emsEnergyDataList 能源数据集合
     * @return 结果
     */
    public int insertEmsEnergyDataBatch(List<EmsEnergyData> emsEnergyDataList);

    /**
     * 修改能源数据
     * 
     * @param emsEnergyData 能源数据
     * @return 结果
     */
    public int updateEmsEnergyData(EmsEnergyData emsEnergyData);

    /**
     * 批量删除能源数据
     * 
     * @param dataIds 需要删除的能源数据主键集合
     * @return 结果
     */
    public int deleteEmsEnergyDataByDataIds(Long[] dataIds);

    /**
     * 删除能源数据信息
     * 
     * @param dataId 能源数据主键
     * @return 结果
     */
    public int deleteEmsEnergyDataByDataId(Long dataId);

    /**
     * 清理历史数据
     * 
     * @param beforeTime 保留此时间之后的数据
     * @return 结果
     */
    public int cleanHistoryData(String beforeTime);
} 